<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script crossorigin="anonymous" src="https://cdn.bootcdn.net/ajax/libs/axios/0.21.1/axios.js"></script>
</head>

<body>
    <button>GET</button>
    <button>POST</button>
    <button>AJAX</button>

    <script>
        const btns = document.querySelectorAll('button');

        // 配置baseURL
        axios.defaults.baseURL = 'http://127.0.0.1:8000';

        // GET
        btns[0].onclick = () => {
            // GET 请求
            axios.get('/axios-server', {
                // url参数
                params: {
                    id: 100,
                    vip: 7
                },
                // 请求头信息
                headers: {
                    name: 'axios-get',
                    num: 10
                }
            }).then(value => { 
                // 获得Promise对象
                console.log(value);
            });
        };

        // POST
        btns[1].onclick = () => {
            // POST 请求
            // 参数: 1-URL 2-请求体 3-其他配置
            axios.post('/axios-server', {
                // 请求体
                data: {
                    username: 'admin',
                    password: 'admin'
                }
            }, {
                // url参数
                params: {
                    id: 200,
                    vip: 4
                },
                // 请求头参数
                headers: {
                    name: 'axios-poat',
                    num: 10
                },
            });
        };
    
        // 通用方式发送请求
        btns[2].onclick = () => {
            // axios函数, 传对象, 完全按照报文格式, 清晰
            axios({
                // 请求方法
                method: 'POST',
                // url
                url: '/axios-server',
                // url参数
                params: {
                    id: 100,
                    vip: 7
                },
                // 请求头信息
                headers: {
                    name: 'axios-get',
                    num: 10
                },
                // 请求体参数
                data: {
                    username: 'admin',
                    password: 'admin'
                }
            }).then(response => {
                // 响应
                console.log(response);
                // 响应状态码
                console.log(response.status);
                // 响应状态字符串
                console.log(response.statusText);
                // 响应头信息
                console.log(response.headers);
                // 响应体
                console.log(response.data);
            });

        };
    </script>
</body>

</html>